package main

import "fmt"

func showAddr(x *int) *int {
	fmt.Printf("x %T %[1]d, %p\n", x, &x) // 指针，大整数 0xc000104020
	*x = 200
	fmt.Printf("x %T %[1]d, %p\n", x, &x)
	return x
}

func main() {
	var m1 = 100
	fmt.Printf("m1 %T %[1]d, %p\n", m1, &m1)

	var m2 = m1 // 内存中 m1 做了一个完全的副本拷贝
	fmt.Println(m2 == m1, &m2 == &m1)
	fmt.Printf("m2 %T %[1]d, %p\n", m2, &m2)
	fmt.Println("~~~~~~~~~~~~~~~~~~~~~~~~")
	var m3 = showAddr(&m1) // 传地址，传了大整数，大整数本质 值 copy 0xc000104020
	fmt.Printf("m1 %T %[1]d, %p\n", m1, &m1)
	fmt.Printf("m2 %T %[1]d, %p\n", m2, &m2)
	fmt.Printf("m3 %T %[1]d, %p\n", m3, m3)
}
